Primeros pasos en la computación cuántica
- Dificultad: Principiante
- Uso de tiempo de QPU: 11 s
¡Bienvenido/a, hacker! Estamos muy contentos de tenerte en el workshop. El objetivo principal de esta práctica introductoria es prepararte para tu viaje cuántico: 1) guiándote en cómo instalar qiskit, 2) cómo crear una cuenta de IBM Cloud y preparar api_key y crn para usar un computador cuántico real, 3) crear tu primer Circuit cuántico, 4) resolver un cuestionario sobre estados cuánticos y 5) ejecutar tus Circuits en el computador cuántico real y representar los resultados.
1. Lo primero es lo primero: Qiskit
¿Qué es Qiskit?
El SDK de Qiskit es una pila de software de alto rendimiento creada para ayudar a desarrolladores e investigadores a aprovechar toda la potencia de los computadores cuánticos a escala de utilidad y más allá. En su núcleo se encuentra el SDK de Qiskit, un kit de desarrollo de software de código abierto para trabajar con computadores cuánticos a nivel de Circuits cuánticos extendidos, Operadores y primitivas. El SDK de Qiskit permite a cualquier persona obtener un rendimiento óptimo de los computadores cuánticos reales usando su entorno de computación preferido.
Más allá del SDK, Qiskit también incluye un conjunto de herramientas y servicios de alto rendimiento como Qiskit Runtime Service, que permite cálculos optimizados en los computadores cuánticos de IBM a través de la nube usando primitivas que gestionan la mitigación de errores. El servicio Qiskit Transpiler, que proporciona métodos heurísticos e impulsados por IA de vanguardia que mejoran el rendimiento para tareas comunes de optimización de Circuits cuánticos.
Qiskit functions, un catálogo de servicios de IBM y de terceros que facilita la optimización de cargas de trabajo y el uso de Qiskit para casos de uso industriales. Tanto si eres un desarrollador de software cuántico, un experimentalista cuántico, un científico computacional o simplemente quieres comenzar, el marco modular y flexible de Qiskit te permite trabajar en el nivel de abstracción que mejor se adapta a tus necesidades.
Qiskit está diseñado para la extensibilidad y la personalización, de modo que puedas extraer un rendimiento líder en la industria y abordar nuevos tipos de problemas. Una base de código de alto rendimiento significa que el SDK de Qiskit trabaja más rápido, usa menos memoria y ofrece mejores resultados que nunca. Y Qiskit también te introduce en una vasta comunidad de usuarios y desarrolladores que están ansiosos por darte la bienvenida y ayudarte a responder tus preguntas. Lanzado por primera vez en 2019, el programa de defensores de Qiskit es una iniciativa global centrada en la comunidad que recluta profesionales y entusiastas de la computación cuántica de todo el mundo. Con el paso de los años, los defensores se han convertido en líderes reconocidos en la comunidad cuántica. ¿Quieres ser el próximo líder cuántico? No dudes en postularte - aquí
Instalar Qiskit
Primero, verifica que la versión de Python que estás usando en tu entorno sea python>=3.10, para asegurarte de que sea compatible con la última versión de Qiskit que usaremos.
from platform import python_version
print(python_version())
Si no es el caso, puedes actualizarlo usando tu herramienta preferida. Si no sabes cómo hacerlo, algunas opciones recomendadas son:
- MacOS: Homebrew
- Linux:
sudo apt-get update
Una guía detallada sobre cómo actualizar Python dependiendo de tu sistema operativo se detalla aquí: How to update Python
Para obtener más información, echa un vistazo al wiki del QGSS (Qiskit Global Summer School) 2025: https://github.com/qiskit-community/qgss-2025/wiki/Jupyter-Notebook-Environment-(Local-and-Online)
Puedes verificar tu instalación ejecutando la celda a continuación. Si la instalaste correctamente, devolverá la versión de qiskit.
# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit
%pip install 'qiskit[visualization]'
%pip install qiskit-ibm-runtime
%pip install qiskit-aer
import qiskit
print(f"Qiskit version: {qiskit.__version__}")
Solución de problemas
Si la celda anterior generó un error, puedes optar por instalar Qiskit en un entorno virtual (se sugieren dos métodos a continuación). Si no tienes errores, puedes ignorar esta celda y pasar a la siguiente.
Aquí proponemos dos métodos diferentes para configurar un entorno virtual para instalar Qiskit.
- Usando venv, como se explica en la guía de instalación de Qiskit.
- Usando conda, como se explica en este vídeo de Coding with Qiskit.
2. Configura tu cuenta de IBM Cloud
Para usar un computador cuántico real, necesitas una api key — un ticket de entrada principal a la nube — y un crn — un token que pondrá tus recursos a tu disposición configurando tu cuenta.
Configura tu cuenta de la siguiente manera:
- Ve a la Plataforma IBM Quantum®.
- Ve a la esquina superior derecha (como se muestra en la imagen anterior), crea tu token de API y cópialo en un lugar seguro.
- En la siguiente celda, reemplaza
deleteThisAndPasteYourAPIKeyHerecon tu clave de API. - Ve a la esquina inferior izquierda (como se muestra en la imagen anterior) y crea tu instancia. Asegúrate de elegir el plan abierto.
- Después de que se cree la instancia, copia su código CRN asociado. Es posible que necesites actualizar para ver la instancia.
- En la celda a continuación, reemplaza
deleteThisAndPasteYourCRNHerecon tu código CRN.
Consulta esta guía para obtener más detalles sobre cómo configurar tu cuenta de IBM Cloud®.
⚠️ Nota: Trata tu clave de API como si fuera una contraseña segura. Consulta la guía de configuración de la nube para obtener más información sobre el uso de tu clave de API tanto en entornos seguros como no confiables.
Además, si eres miembro de la red universitaria de socios de IBM, utiliza la dirección de correo electrónico de tu institución para tu IBM ID para recibir el beneficio de socio.
from qiskit_ibm_runtime import QiskitRuntimeService
# Save your API key and crn and have access to the quantum computers
your_api_key = "deleteThisAndPasteYourAPIKeyHere"
your_crn = "deleteThisAndPasteYourCRNHere"
QiskitRuntimeService.save_account(
channel="ibm_cloud",
token=your_api_key,
instance=your_crn,
overwrite=True
)
# Check that the account has been saved properly
service = QiskitRuntimeService()
service.saved_accounts()
# See backends you can use
service.backends()
3. Tu primer circuito cuántico
Circuitos cuánticos
La unidad fundamental de Qiskit es el circuito cuántico, que es una serie de instrucciones que un computador cuántico puede usar para trabajar con bits cuánticos de información, también conocidos como qubits. Estos qubits tienen propiedades especiales que permiten a los computadores cuánticos abordar los problemas de manera diferente a cómo lo haría tu portátil o iPhone. Qiskit avanza rápidamente como tecnología — aunque todavía puedes diseñar manualmente tus Circuits cuánticos y decidir cómo quieres ejecutarlos (y hay muchas buenas razones para hacerlo), IBM Quantum también te proporciona herramientas que simplifican el proceso. En aras del aprendizaje, vamos a diseñar un Circuit muy simple y ejecutarlo en un simulador.
Nos estamos acelerando en este resumen porque, honestamente, podríamos pasar horas solo explicando los conceptos básicos de la información y la computación cuántica. De hecho, IBM Quantum ya ha hecho esto, produciendo un curso escrito y una serie de clases en vídeo dedicados al tema. ¡Si necesitas un repaso, échales un vistazo!
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector
from qiskit.visualization import plot_state_qsphere
from qiskit_aer import AerSimulator
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit.transpiler import generate_preset_pass_manager
from qiskit.visualization import array_to_latex
from qiskit.visualization import plot_distribution
import numpy as np
from numpy import sqrt
Operaciones básicas sobre qubits y mediciones
Descripción de estados de un solo qubit
Comencemos observando un qubit único. La principal diferencia entre un bit clásico, que solo puede tomar los valores 0 y 1, es que un bit cuántico, o qubit, puede estar en los estados , , así como en una combinación lineal de estos dos estados. Esta característica se conoce como superposición, y nos permite escribir el estado más general de un Qubit como:
Si midiéramos el estado de este qubit, encontraríamos el resultado con probabilidad , y el resultado con probabilidad . Como puedes ver, la probabilidad total es , lo que significa que efectivamente mediremos o , y no existe ningún otro resultado.
Además de , es posible que hayas notado otro parámetro arriba. La variable indica la fase cuántica relativa entre los dos estados y . Como descubriremos más adelante, esta fase relativa es bastante importante. Por ahora, basta señalar que la fase cuántica es lo que permite la interferencia entre estados cuánticos, lo que nos da la capacidad de escribir algoritmos cuánticos para resolver tareas específicas.
Visualizaci ón de estados cuánticos
A lo largo de este ejercicio visualizamos estados cuánticos usando lo que se conoce como qsphere. Aquí se muestra cómo se ve el qsphere para los estados y , respectivamente. Ten en cuenta que la parte más alta de la esfera representa el estado , mientras que la parte inferior representa .
#visualize |0>
sv=Statevector([1, 0])
plot_state_qsphere(sv)
Puedes crear exactamente el mismo QSphere usando un Circuit cuántico. El statevector que se usa aquí es del estado . En Qiskit, el Qubit se inicializa en el estado . Intenta ejecutar el Circuit a continuación y comprueba si puedes obtener el mismo QSphere.
qc1 = QuantumCircuit(1)
sv=Statevector(qc1)
plot_state_qsphere(sv)
Ahora visualicemos el estado .
No debería sorprenderte que el estado de superposición con fase cuántica y probabilidad (lo que significa una probabilidad igual de medir tanto 0 como 1) se muestre en el qsphere con dos puntos. Sin embargo, observa también que el tamaño de los círculos en los dos puntos es más pequeño que cuando simplemente teníamos y anteriormente. Esto se debe a que el tamaño de los círculos es proporcional a la probabilidad de medir cada uno, que ahora se ha reducido a la mitad.
#visualize 1/sqrt(2)|0> + 1/sqrt(2)|1>
sv=Statevector([1/sqrt(2), 1/sqrt(2)])
plot_state_qsphere(sv)
En el caso de estados de superposición, donde la fase cuántica es distinta de cero, el qsphere nos permite visualizar esa fase cambiando el color del blob respectivo. Por ejemplo, el estado con (grados) y probabilidad se muestra en el qsphere a continuación.
sv=Statevector([1/sqrt(2), 1/sqrt(2)*1j])
plot_state_qsphere(sv)
Manipulación de qubits
Los qubits se manipulan aplicando puertas cuánticas. Repasemos una descripción general de las diferentes puertas que consideraremos en los siguientes ejercicios.
Primero, describamos cómo podemos cambiar el valor de para nuestro estado cuántico general. Para hacer esto, usaremos dos puertas:
-
Puerta : Esta puerta cambia entre los dos estados y . Esta operación es la misma que la puerta NOT clásica. Como resultado, la puerta a veces se denomina puerta de inversión de bit o NOT. Matemáticamente, la puerta cambia a , por lo que en particular de 0 a 1, y viceversa.
-
Puerta : Esta puerta nos permite pasar del estado al estado . Este estado también se conoce como . Matemáticamente, esto significa pasar de a . Como el estado final del Qubit es una superposición de y , el Gate de Hadamard representa una verdadera operación cuántica.
Observa que ambas puertas cambiaron el valor de , pero no . Afortunadamente para nosotros, es bastante fácil visualizar la acción de estas puertas mirando la figura a continuación.
Una vez que tenemos el estado , podemos cambiar la fase cuántica aplicando varias otras puertas. Por ejemplo, una puerta añade una fase de grados a , mientras que el Gate añade una fase de grados a . Para restar una fase de grados, podemos aplicar el Gate , que se lee S-dagger y comúnmente se escribe como sdg. Finalmente, existe un Gate que aplica una secuencia de Gates y .
Puedes experimentar con las puertas , , , , y para familiarizarte con las diferentes operaciones y cómo afectan al estado de un qubit. Para hacerlo, puedes visitar Circuit Composer e iniciar nuestro widget de Circuit. Después de visitar el Circuit Composer, elige un Gate para aplicar a un Qubit y luego elige el Qubit (en los primeros ejemplos, el único Qubit para elegir es el qubit 0). Observa cómo cambia el estado correspondiente con cada Gate, así como la descripción de ese estado. También te proporcionará el código que crea el Circuit cuántico correspondiente en Qiskit.
Si quieres aprender más sobre la descripción de estados cuánticos, operadores de Pauli y otras puertas de un solo qubit, consulta Información cuántica del Sistema Único del curso Conceptos Básicos de Información Cuántica de John Watrous.